﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Web;
//using NUnit.Framework;
//using Spring.Context;
//using Spring.Context.Support;
//using Studio7i.Dominio;
//using Studio7i.Negocio;
//using Studio7i.Persistencia;
 
 
 
//namespace Studio7i.Pruebas
//{
//[TestFixture]
//public class TestAdministracion1cs
//{
//IApplicationContext Spring = null;
//IAdministracionService Service = null;
//Local localCreado = null;
//Sala salaInscrita = null;
//Cliente clienteInscrita = null;
//Instrumento instCreado = null;
 
//[TestFixtureSetUp]
//public void PrepararPruebas()
//{
//// Inicializacin del contenedor de objetos de Spring.NET
//Spring = new XmlApplicationContext(
//"assembly://Studio7i/Studio7i/CapaPersistencia.xml",
//"assembly://Studio7i/Studio7i/CapaNegocio.xml"
//);
//// Obtencin de la referencia al objeto "administracionService"
//Service = (IAdministracionService)Spring.GetObject("administracionService");
 
//// Creacin de un local de pruebas
//localCreado = ((ILocalDAO)Spring.GetObject("localDAO_ADO")).Crear(
//new Local() { CodLocal = 11, Direccion = "Bailety 155", Distrito = "San Borja" });
 
//// Creacin de un instrumento de pruebas
//instCreado = ((IInstrumentoDAO)Spring.GetObject("instrumentoDAO_ADO")).Crear(
//new Instrumento() { Tipo = "Bateria", Marca = "Yamaha", Modelo = "N43", FechFabricacion = DateTime.ParseExact("2009", "yyyy", null), Caracteristicas = "Bateria de ltima generacin", CostoHora = 9, Estado = true });
////creacion de un cliente
////(int coduser, string nombUsuario, string clave, string dni, string nombres, string apellidos, string email, DateTime fechaNac);
//clienteInscrita = ((IClienteDAO)Spring.GetObject("clienteDAO_ADO")).Crear(
//new CLiente() { coduser = 567, nombUsuario = "Juam", clave = "123", dni = "12345678", nombres = "Juan", apellidos = "Perez", email = "juan@hotmail.com", fechaNac = DateTime.ParseExact("2009", "yyyy", null) });
 
//// CREACION DE UNA SALA PARA PRUEBAS
//// salaInscrita = ((ISalaDAO)Spring.GetObject("salaDAO_ADO")).Crear(
////new Sala() { nombre = "E43A Rocks!", localcodigo = 10, Capacidad = 30, caracteristicas = ".NET Students" });
//// Service.InscribirSala("E43A Rocks!", localCreado.CodLocal, 30, ".NET Students");
//}
//// prueba para detectar si hay datos incompletos en isntrumento, no hay dato en el costo por hora
//[Test]
//public void InstrumentoDatosIncompletos()
//{
//Assert.Catch<DatosInsuficientesException>(delegate
//{
//Service.RegistrarInstrumento("Guitarra", "YCA", "N67", DateTime.ParseExact("2009", "yyyy", null), "Elctrica", 0, true);
//});
//}
//[Test]
//public void ClienteDatosIncompletos()
//{
//Assert.Catch<DatosInsuficientesException>(delegate
//{
//Service.RegistrarCliente(3, null, "df", "12345678", "Mi", "montanchez", "m@hot", DateTime.ParseExact("2009", "yyyy", null));
 
//});
//}
 
//// prueba para registrar un instrumento ok,se tiene q verificar q tengan la misma data, y que el codigo sea mayor de 0
//[Test]
//public void InstrumentoCreadoOK()
//{
//Assert.DoesNotThrow(delegate
//{
//instCreado = Service.RegistrarInstrumento("Bajo", "CASIO", "OP32", DateTime.ParseExact("2009", "yyyy", null), "Bajo con 5 cuerdas", 40, true);
//});
//// Verificamos que la sala inscrita no sea nula
//Assert.IsNotNull(instCreado);
//// Verificamos que el cdigo generado para la sala sea mayor que 0
//Assert.Greater(instCreado.CodInst, 0);
//// Verificamos que las dems propiedades grabadas sean iguales a las solicitadas
//Assert.AreEqual(instCreado.Tipo, "Bajo");
//Assert.AreEqual(instCreado.Marca, "CASIO");
//Assert.AreEqual(instCreado.Modelo, "OP32");
//Assert.AreEqual(instCreado.FechFabricacion, "2009");
//Assert.AreEqual(instCreado.Caracteristicas, "Bajo con 5 cuerdas");
//Assert.AreEqual(instCreado.CostoHora, "40");
//Assert.AreEqual(instCreado.Estado, true);
//}
 
 
 
 
//[Test]
//public void Test1_InscribirSala_DatosInsuficientes()
//{
//// Probamos que se lance la excepcin porque pasamos "null" en caractersticas
//Assert.Catch<DatosInsuficientesException>(delegate
//{
//Service.InscribirSala("E43A Rocks!", localCreado.CodLocal, 30, null);
//});
//}
//[Test]
//public void Test_InscribirCliente_Ok()
//{
//// Probamos que no exista error en la inscripcin de la sala
//Assert.DoesNotThrow(delegate
//{
//clienteInscrita = Service.RegistrarCliente(3, "rrr", "456", "12345678", "MI", "GALINDO", "m@hot", DateTime.ParseExact("2009", "yyyy", null));
 
 
//});
//// Verificamos que la sala inscrita no sea nula
//Assert.IsNotNull(clienteInscrita);
//// Verificamos que el cdigo generado para la sala sea mayor que 0
//Assert.Greater(clienteInscrita.CodUser, 0);
//// Verificamos que las dems propiedades grabadas sean iguales a las solicitadas
////Assert.AreEqual(clienteInscrita.CodUser, 3);
//Assert.AreEqual(clienteInscrita.NombreUsuario, "rrr");
//Assert.AreEqual(clienteInscrita.Clave, "456");
//Assert.AreEqual(clienteInscrita.DNI, "12345678");
//Assert.AreEqual(clienteInscrita.Nombres, "MI");
//Assert.AreEqual(clienteInscrita.Apellidos, "GALINDO");
//Assert.AreEqual(clienteInscrita.Email, "m@hot");
//Assert.AreEqual(clienteInscrita.FechaNac, DateTime.ParseExact("2009", "yyyy", null));
//}
//[Test]
 
////registrar cliente repetido
////(int coduser, string nombUsuario, string clave, string dni, string nombres, string apellidos, string email, DateTime fechaNac);
//[Test]
//public void Test_RegistrarCliente_Repetido()
//{
//// Probamos que se lance la excepcin de cliente repetido colocando el mismo codigo
//Assert.Catch<EntidadRepetidaException>(delegate
//{
//Service.RegistrarCliente(567, "Pedro Garcia", "123", "12345678", "Juan", "Perez", "juan_75@hotmail.com", DateTime.ParseExact("2009", "yyyy", null));
//});
//// coduser = 567, nombUsuario = "Juam", clave = "123", dni = "12345678", nombres = "Juan", apellidos = "Perez", email = "juan@hotmail.com", fechaNac = DateTime.ParseExact("2009", "yyyy", null) });
//// Probamos que se lance la excepcin de cliente repetido colocando el mismo email
//Assert.Catch<EntidadRepetidaException>(delegate
//{
//Service.RegistrarCliente(5678, "Pedro Garcia", "123", "12345678", "Juan", "Perez", "juan@hotmail.com", DateTime.ParseExact("2008", "yyyy", null));
//});
//}
////registrar cliente con clave que no coincida
//[Test]
//public void Test_RegistrarCliente_ClavesNoCoinciden()
//{
//// Probamos que se lance la excepcin de cliente repetido colocando el mismo codigo
//Assert.Catch<DatosNoCoincidenException>(delegate
//{
//Service.RegistrarCliente(5678, "Pedro Garcia", "321", "12345678", "Juan", "Perez", "juan@hotmail.com", DateTime.ParseExact("2008", "yyyy", null));
//});
//}
//}